2023/12/231794字符
声明
- 未定义 大多数开发者倾向于 undefined 等同于 undeclared,但在 JS 中他们完全是两码事
var a; //--> undefined 未定义
// b; //--> undeclared 未声明
原始值
- String
var a = 'foo';
var b = ['f', 'o', 'o'];
var c = a.concat('bar'); //--> "foobar"
var d = b.concat(['b', 'a', 'r']); //--> ["f", "o", "o", "b", "a", "r"]
a.join; //--> undefined
a.map; //--> undefined
var c = Array.prototype.join.call(a, '-'); //--> "f-o-o"
var d = Array.prototype.map.call(a, function(v){
return v.toUpperCase() + '.'; //--> "F.O.O."
}).join('');
- Number
var a = 42.59;
a.toFixed(3); //--> "42.590" 指定小数部分显示位数
a.toPrecision(5); //--> "42.590" 指定有效数字显示位数
42 .toFixed(3); //--> 42.000 直接调用必须加空格
42..toFixed(3); //--> 42.000 第一个点会被翻译为小数点的 "."
// ES6检测整数
Number.isInteger(42); //--> true
// ES6之前
if (!Number.isInteger) {
Number.isInteger = function (num) {
return typeof num == 'number' && num % 1 == 0;
}
}
1 / 0; //--> Infinity
0 / -3 //--> -3
- Array
var a = [];
a["13"] = 42; // 这里的 [] 会产生类型转换
a.length; //--> 14
引用值
- 引用值指向同一个地址
var c = [1, 2, 3];
var d = c; // d 是 [1, 2, 3] 的一个引用
d.push(4);
c; //--> [1, 2, 3, 4]
d; //--> [1, 2, 3, 4]
var a = [1, 2, 3];
var b = a;
a; //--> [1, 2, 3]
b; //--> [1, 2, 3]
b = [4, 5, 6];
a; //--> [1, 2, 3]
b; //--> [4, 5, 6]
function foo(x){
x.push(4);
x = [4, 5, 6];
x.push(7);
}
var a = [1, 2, 3];
foo(a);
a; //--> [1, 2, 3, 4]